#!/usr/bin/python3
# _*_ coding: utf-8 _*_
#
# Copyright (C) 2024 - 2024 heihieyouheihei, Inc. All Rights Reserved 
#
# @Time    : 2024/8/14 21:58
# @Author  : Yuyun
# @File    : 素数之积.py
# @IDE     : PyCharm


"""
题目描述：

RSA加密算法在网络安全世界中无处不在，它利用了极大整数因数分解的困难度，数据越大，安全系数越高，给定一个32位正整数，请对其进行因数分解，找出是哪两个素数的乘积。

输入描述： 一个正整数num 0<num<=2147483647
输出描述：
如果成功找到，以单个空格分割，从小到大输出两个素数，分解失败，请输出-1 -1

示例1
输入： 15
输出： 3  5
说明：
因数分解Q后，找到两个素数3和5，使得3*5=15，按从小到大排列后，输出3 5
示例2
输入： 27
输出： -1 -1
说明：
通过因数分解，找不到任何素数，使得他们的乘积为27，输出-1 -1
"""


"""
步骤如下：
判断素数：编写一个函数来判断一个数是否为素数。素数是指除了1和自身之外没有其他因数的数。
寻找因数对：从2开始遍历到 sqrt(num)，寻找因数对 (i, num // i)，并检查这两个因数是否为素数。
输出结果：如果找到满足条件的素数对，则按升序输出这两个素数；否则输出 -1 -1。
"""
import math
def is_Primer(n):
    if n < 2:
        return False
    elif n == 2 or n == 3:
        return True
    else:
        if n % 2 == 0 or n % 3 == 0:
            return False
        # 从5到sqrt(n)开始仅检查奇数，无需变量至 n，节约时间
        # for i in range(5, int(n ** 0.5) + 1, 2):
        for i in range(5, int(math.sqrt(n)) + 1, 2):
            if n % i == 0:
                return False
    # 其他情况数为素数
    return True

def find_Primer_pair(num):
    # for i in range(2, int(num ** 0.5) + 1):
    for i in range(2, int(math.sqrt(num)) + 1):
        if num % i == 0:        #找到可以整除的数i
            if is_Primer(i) and is_Primer(num // i):        #判断是否是素数对
                return min(i, num // i), max(i, num // i)
    #其他情况默认返回-1,-1
    return -1, -1
num = int(input())
f_1, f_2 = find_Primer_pair(num)
print(f_1, f_2)